const fs = require("fs");
const xlsx = require("node-xlsx");

const workSheetsFromBuffer = xlsx.parse(
  // "./excelFiles/caseData.xlsx"
  // "./excelFiles/血尿病人数据提取门诊明细(移除无用数据).xlsx"
  // "./excelFiles/血尿病人数据提取门诊明细(过滤).xlsx"
  // "./excelFiles/血尿病人数据提取门诊明细(排序).xlsx"
  "./excelFiles/血尿病人数据提取门诊明细(格式化).xlsx"
  // "./excelFiles/血尿病人数据提取门诊明细.xlsx"
  // "./excelFiles/血尿病人数据提取门诊明细(分类).xlsx"
);

/**
 * 读取并过滤表格数据
 * @param {*} obj 表格数据对象
 * @returns 过滤后的表格数据对象
 */
// 去掉无用数据
// const filter = (obj) => {
//   return obj.map((currentValue, index) => {
//     let cache = currentValue.data.map((v, i) => {
//       let flag = v[15];
//         if (flag) {
//           let newArray = [...v];
//           return (v = newArray);
//         }
//     });
//     return {
//       name: currentValue.name,
//       data: cache.filter((ele) => !!ele),
//     };
//   });
// };

// 去掉错误数据
const filter = (obj) => {
  return obj.map((currentValue, index) => {
    let cache = currentValue.data.map((v, i) => {
      if (v.length === 18) {
        let newArray = [...v];
        return (v = newArray);
      }
    });
    return {
      name: currentValue.name,
      data: cache.filter((ele) => !!ele),
    };
  });
};

// 排序
// const filter = (obj) => {
//   return obj.map((currentValue, index) => {
//     const list = JSON.parse(JSON.stringify(currentValue.data));
//     function customSort(a, b) {
//       // 按照第二项索引排序
//       if (a[1] !== b[1]) {
//         return a[1] - b[1];
//       }

//       // 如果索引相同，按照指定的排序规则排序
//       const orderMap = { U1001: 1, RBC: 2, U1002: 3 };
//       return orderMap[a[13]] - orderMap[b[13]];
//     }

//     const sortedList = [];

//     for (let i = 0; i < list.length; i += 3) {
//       const group = list.slice(i, i + 3);
//       group.sort(customSort);
//       sortedList.push(...group);
//     }
//     return {
//       name: currentValue.name,
//       data: sortedList,
//     };
//   });
// };

// 将同样卡号的数据合并统计
// const filter = (obj) => {
//   return obj.map((currentValue, index) => {
//     let objMaps = {};
//     currentValue.data.map((v, i) => {
//       let key = v[1];
//       if (!objMaps[key]) {
//         objMaps[key] = [...v];
//       } else {
//         objMaps[key] = [...objMaps[key], v[15]];
//       }
//     });
//     // console.log("objMaps: ", objMaps);
//     let cache = [];
//     Object.keys(objMaps).forEach(key1 => {
//       cache.push(objMaps[key1])
//     })
//     return {
//       name: currentValue.name,
//       data: cache,
//     };
//   });
// };

// const filter = (obj) => {
//   return obj.map((currentValue, index) => {
//     let cache = currentValue.data.map((v, i) => {
//       let type = v[13];

//       // if (type === "U1001") {
//       // if (type === "RBC") {
//       if (type === "U1002") {
//         let newArray = [...v];
//         return (v = newArray);
//       }
//     });
//     return {
//       name: currentValue.name,
//       data: cache.filter((ele) => !!ele),
//     };
//   });
// };

// 生成表格数据对象  wch为设置列宽度
const buffer = xlsx.build(filter(workSheetsFromBuffer), {
  "!cols": [{ wch: 50 }, { wch: 50 }],
});

//生成excel
fs.writeFile(
  // "./jsonFiles/血尿病人数据提取门诊明细(移除无用数据).xlsx",
  // "./jsonFiles/血尿病人数据提取门诊明细(格式化).xlsx",
  "./jsonFiles/血尿病人数据提取门诊明细(最终数据).xlsx",
  // "./jsonFiles/血尿病人数据提取门诊明细(U1001).xlsx",
  // "./jsonFiles/血尿病人数据提取门诊明细(RBC).xlsx",
  // "./jsonFiles/血尿病人数据提取门诊明细(U1002).xlsx",
  // "./jsonFiles/血尿病人数据提取门诊明细(排序).xlsx",
  buffer,
  (err) => {
    if (err) throw err;
    console.log("生成完毕");
  }
);
